8524. Сумма положительных в матрице

 

Задана матрица размера n * n. Найдите сумму ее положительных чисел.

 

Вход. Первая строка содержит число n (1 ≤ n ≤ 100). Следующие строки содержат матрицу n * n. Элементы матрицы по модулю не больше 100.

 

Выход. Выведите сумму положительных чисел в матрице.

 

Пример входа

Пример выхода

3

4 -2 5

1 -4 -12

0 1 -3

11

 

 

РЕШЕНИЕ

массив - двумерный

 

Анализ алгоритма

При помощи двойного цикла находим сумму положительных чисел матрицы – двумерного массива.

 

Реализация алгоритма

Объявим двумерный массив m.

 

int m[101][101];

 

Читаем элементы матрицы. В переменной s подсчитываем сумму ее положительных чисел.

 

scanf("%d",&n);

s = 0;

for(i = 0; i < n; i++)

for(j = 0; j < n; j++)

{

  scanf("%d",&m[i][j]);

  if (m[i][j] > 0) s = s + m[i][j];

}

 

Выводим требуемый ответ.

 

printf("%d\n",s);

 

Java реализация

 

import java.util.*;

 

public class Main

{

  public static void main(String[] args)

  {

    Scanner con = new Scanner(System.in);

    int n = con.nextInt();

    int m[][] = new int[n][n];

   

    int s = 0;

    for(int i = 0; i < n; i++)

    for(int j = 0; j < n; j++)

    {

      m[i][j] = con.nextInt();

      if (m[i][j] > 0) s = s + m[i][j];

    }

 

    System.out.println(s);

    con.close();

  }

}

 

Java реализация – threads

 

import java.util.*;

 

class SumRow extends Thread

{

  int[][] m;

  int row, res;

 

  SumRow(int[][] m, int row)

  {

    this.m = m;

    this.row = row;

  }

 

  public void run()

  {

    res = 0;

    for(int i = 0; i < m[0].length; i++)

      if (m[row][i] > 0) res = res + m[row][i];

  }

 

  public int GetValue()

  {

    return res;

  }

}

 

public class Main

{

  public static void main(String[] args) throws InterruptedException

  {

    Scanner con = new Scanner(System.in);

    int n = con.nextInt();

    int m[][] = new int[n][n];

    for(int i = 0; i < n; i++)

    for(int j = 0; j < n; j++)

      m[i][j] = con.nextInt();

 

    SumRow s[] = new SumRow[n];

    for(int i = 0; i < n; i++)

    {

      s[i] = new SumRow(m,i);

      s[i].start();

    }

   

    for(int i = 0; i < n; i++)

      s[i].join();

   

    int sum = 0;

    for(int i = 0; i < n; i++)

      sum = sum + s[i].GetValue();

     

    System.out.println(sum);

    con.close();

  }

}

 

Python реализация

 

n = int(input())

a = [[int(j) for j in input().split()] for _ in range(n)]

 

sum = 0

for i in range(n):

  for j in range(n):

    if a[i][j] > 0: sum += a[i][j]

 

print(sum)